package container

import "fmt"

/**
	map 类型： map[K]V  k表示键，v表示值

	是个HashMap k是无序

	k的类型：除了 slice, map ， func 其余都可以

 */

func main() {

	// 定义一个 map 类型
	m := map[string]string {
		"name":"ccmouser",
		"course":"golang",
	}

	fmt.Println("m = ", m)
	fmt.Println("m[\"name\"]", m["name"])

	// 创建一个map， string类型的key， map[string]string 作为值
	mt := make(map[string]map[string]string)
	fmt.Println("map也可以做值V", mt)

	// 通过 make 分配
	m2 := make(map[string]int) // m2 == empty map

	var m3 map[string]int // m3 == nil


	fmt.Println("m2 = ", m2)
	fmt.Println("m3 = ", m3)

	// 添加值
	m["age"]="21"


	// 遍历的时候不保证顺序
	for k, v := range m {
		fmt.Println("k = ",k ,"v = " , v)
	}

	// name, ok := m["name"]
	// ok 返回的就是 true 和 false
	// 判断 map 的值存不存在
	if name, ok := m["name"]; ok {
	   fmt.Println(name)
	} else {
		fmt.Println("这个key不存在！")
	}

	// 删除
	delete(m, "name")

}
